
import axios from 'axios'
// 获取store实例
import store from '@/store'
import { Message } from 'element-ui'
// 路由
import router from '@/router'

// 创建实例
const request =  axios.create({
    timeout:5000,
    // 已经在config中配置了代理项,这里直接使用代理的路径即可
    // 这里使用env环境变量检测开发生产环境,换成对应url
    baseURL:process.env.VUE_APP_BASE_API
})

// 请求拦截器
request.interceptors.request.use((config) => {

  // 请求头添加token
  if(store.getters.token){
    config.headers.authorization = `Bearer ${store.getters.token}`
  }

  // 这里必须return否则不能获取
  return config
},
(error) => {
  // 失败直接使用promise终止
  return Promise.reject(error)
})

// 路由拦截器
request.interceptors.response.use((response) => {

  const {data,message,success} = response.data
  if(success){
    return data
  } else {
    Message({type:'error',message:message})
    return Promise.reject(new Error(message))
  }

},
async (error) => {
  // 401拦截
  if(error?.response?.status === 401){
    Message.warning('验证失效,请重新登录')
    // console.log(1);
    // // 调用退出登录方法删除token与user,删除后路由守卫就会判断token为空跳转登录
    await store.dispatch('user/logout') // 删除token与userInfo
    router.push('/login') // 跳转首页
    // // return Promise.reject(error)
  }else {
    // 使用引入的element组件提示信息
    Message({tpe:'error',message:error?.message})


  return Promise.reject(error)
  }

    
})


export default request